package model;

import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * Класс описывающий маршрут
 * @version 1.0
 * @see Point
 */
@XmlRootElement
public class Route{
    /**
     * Пункт отправления
     */
    private Point depart;
    /**
     * Пункт прибытия
     */
    private Point arrive;
    /**
     * ID
     */
    public int id;
    
    /**
     * Конструктор без параметров
     * @see Route
     */
    public Route(){
        depart = new Point();
        arrive = new Point();
    }
    
    /**
     * Конструктор для инициализации пунктов отправления и прибытия 
     * @param from Пункт отправления
     * @param to Пункт прибытия
     * @see Route
     * @see Point
     */
    public Route(Point from, Point to){
        this.depart = from;
        this.arrive = to;
    }
    
     public Route(ResultSet rs) throws SQLException{
        this.depart = Points.getByID(rs.getInt("outpoint"));
        this.arrive = Points.getByID(rs.getInt("inpoint"));
        this.id = rs.getInt("id"); 
     }
    
    /**
     * Конструктор для инициализации названий городов и 
     * аэропортов пунктов отправления и прибытия
     * @param departTown Название города пункта отправления
     * @param departAirport Название аэропорта пункта отправления
     * @param arriveTown Название города пункта прибытия
     * @param arriveAirport Название аэропорта пункта прибытия
     * @see Route
     */
    public Route(String departTown, String departAirport, String arriveTown, String arriveAirport){
        this.arrive = new Point(arriveTown, arriveAirport);
        this.depart = new Point(departTown, departAirport);
    }


    public void setPointDepart(Point depart) {
        this.depart = depart;
    }

    public void setPointArrive(Point arrive) {
        this.arrive = arrive;
    }
    
    public void setID(int id) {
        this.id = id;
    }

    public Point getPointDepart() {
        return this.depart;
    }

 
    public Point getPointArrive() {
        return this.arrive;
    }
    
    public int getID() {
        return this.id;
    }
}
